package com.fantu.vehicle_installation_information_registration.controller;

import com.alibaba.fastjson.JSON;
import com.fantu.vehicle_installation_information_registration.domain.VIIREntity;
import com.fantu.vehicle_installation_information_registration.service.IVIIRService;
import com.fantu.vehicle_installation_information_registration.service.dto.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
//@Controller
@RequestMapping("admin")
public class VIIRController {

    @Autowired
    IVIIRService iviirService;

    @RequestMapping("/adds")
    public Result<String> adds(VIIREntity viirEntity){


        Result<String> result = new Result<>();
//        判断手机号码
        final String REGEX_MOBILE = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
//        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
//        Pattern p = Pattern.compile(regex);
//        Matcher m = p.matcher(viirEntity.getCellPhoneNumber());
//        boolean isMatch = m.matches();

        // 定义判别用户身份证号的正则表达式（15位或者18位，最后一位可以为字母）
        String regularExpression =
                "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|"
                        + "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";

        //^开头
        //[1-9] 第一位1-9中的一个      4
        //\\d{5} 五位数字           10001（前六位省市县地区）
        //(18|19|20)                19（现阶段可能取值范围18xx-20xx年）
        //\\d{2}                    91（年份）
        //((0[1-9])|(10|11|12))     01（月份）
        //(([0-2][1-9])|10|20|30|31)01（日期）
        //\\d{3} 三位数字            123（第十七位奇数代表男，偶数代表女）
        //[0-9Xx] 0123456789Xx其中的一个 X（第十八位为校验值）
        //$结尾

        //假设15位身份证号码:410001910101123  410001 910101 123
        //^开头
        //[1-9] 第一位1-9中的一个      4
        //\\d{5} 五位数字           10001（前六位省市县地区）
        //\\d{2}                    91（年份）
        //((0[1-9])|(10|11|12))     01（月份）
        //(([0-2][1-9])|10|20|30|31)01（日期）
        //\\d{3} 三位数字            123（第十五位奇数代表男，偶数代表女），15位身份证不含X
        //$结尾




//        final String snc = "所在水泥厂名称";
//        System.out.println(viirEntity.getCementPlant() + viirEntity.getAffiliatedCompanyDistributor() +viirEntity.getLicensePlateNumber()+viirEntity.getVehicleOwner()
//        +viirEntity.getCellPhoneNumber()+viirEntity.getIdNumber()+viirEntity.getVehicleType()+viirEntity.getLoads()+viirEntity.getAxleNumber()+viirEntity.getInstallationTime()+viirEntity.getPhotoFile());
        System.out.println(viirEntity.getCementPlant());
        System.out.println(viirEntity.getAffiliatedCompanyDistributor());
        System.out.println(viirEntity.getLicensePlateNumber());
        System.out.println(viirEntity.getVehicleOwner());
        System.out.println(viirEntity.getCellPhoneNumber());
        System.out.println(viirEntity.getIdNumber());
        System.out.println(viirEntity.getVehicleType());
        System.out.println(viirEntity.getLoads());
        System.out.println(viirEntity.getAxleNumber());
        System.out.println(viirEntity.getInstallationTime());
        System.out.println(viirEntity.getPhotoFile());

        if (viirEntity.getCementPlant() != null && viirEntity.getCementPlant() != "" && !viirEntity.getCementPlant().equals("所在水泥厂名称")){
            if (viirEntity.getAffiliatedCompanyDistributor() != null && viirEntity.getAffiliatedCompanyDistributor() != ""){
                if (viirEntity.getLicensePlateNumber() != null && viirEntity.getLicensePlateNumber() != ""){
                    if (viirEntity.getVehicleOwner() != null && viirEntity.getVehicleOwner() != ""){
                        if (viirEntity.getCellPhoneNumber() != null && viirEntity.getCellPhoneNumber() != ""){
                                if (viirEntity.getCellPhoneNumber().matches(REGEX_MOBILE)) {
                                    if (viirEntity.getIdNumber() != null && viirEntity.getIdNumber() != "") {
                                            if (viirEntity.getIdNumber().matches(regularExpression)) {
                                                if (viirEntity.getVehicleType() != null && viirEntity.getVehicleType() != "" && !viirEntity.getVehicleType().equals("请选择车型")) {
                                                    if (viirEntity.getAxleNumber() != null && viirEntity.getAxleNumber() != "" && !viirEntity.getAxleNumber().equals("请选择车辆轴数")) {
                                                        if (viirEntity.getLoads() != null && viirEntity.getLoads() != "" && !viirEntity.getLoads().equals("请选择车辆载重")) {
                                                            if (viirEntity.getInstallationTime() != null && viirEntity.getInstallationTime() != "") {
                                                                if (viirEntity.getPhotoFile() != null && viirEntity.getPhotoFile() != "") {
//                                                              iviirService.adds(viirEntity);
//                                                              前端判断 code等于200 则弹窗result信息
//                                                              如果code 不等于200 则弹出msg信息
                                                                    result.setResult("添加成功！");
                                                                    return result;
                                                                } else {
                                                                    result.setCode(2000);
                                                                    result.setMsg("请输入车身图片");
                                                                    return result;
                                                                }

                                                            } else {
                                                                result.setCode(2000);
                                                                result.setMsg("请输入安装时间");
                                                                return result;
                                                            }

                                                        } else {
                                                            result.setCode(2000);
                                                            result.setMsg("请选择车辆载重");
                                                            return result;
                                                        }

                                                    } else {
                                                        result.setCode(2000);
                                                        result.setMsg("请选择车辆轴数");
                                                        return result;
                                                    }

                                                } else {
                                                    result.setCode(2000);
                                                    result.setMsg("请选择车型");
                                                    return result;
                                                }

                                            }else {
                                                result.setCode(2000);
                                                result.setMsg("请输入正确的身份证号码！");
                                                return result;
                                            }

                                    } else {
                                        result.setCode(2000);
                                        result.setMsg("请输入身份证号码");
                                        return result;
                                    }

                                }else {
                                    result.setCode(2000);
                                    result.setMsg("您的手机号是错误格式！！！");
                                    return result;
                                }

                        }else {
                            result.setCode(2000);
                            result.setMsg("请输入手机号码");
                            return result;
                        }

                    }else {
                        result.setCode(2000);
                        result.setMsg("请输入车主");
                        return result;
                    }

                }else {
                    result.setCode(2000);
                    result.setMsg("请输入车牌号");
                    return result;
                }

            }else {
                result.setCode(2000);
                result.setMsg("请输入所属公司/经销商");
                return result;
            }

        }else {
            result.setCode(2000);
            result.setMsg("请输入所在水泥厂");
            return result;
        }
    }

    @RequestMapping("/getAll")
    @ResponseBody
    public List<VIIREntity> getAll(){
        return iviirService.getAll();
    }

    @GetMapping("/getResult")
    @ResponseBody
    public List<VIIREntity> getResult(){
        return iviirService.getResult();
    }

    @GetMapping("/getResult1")
//    @ResponseBody
    public Object getMap(){
        Map<String,Object> map = new HashMap<>();

        List<VIIREntity> result = iviirService.getResult();

//        map.put("result",result);
        map.put("length1",result.size());

        return map;
    }

    @RequestMapping(value =  "del" )
    @ResponseBody
    public String deleteProfessorByProid(Integer id){
        this.iviirService.deleteUser(id);
        return "0";
    }

    @RequestMapping("/first")
    @ResponseBody
    public String userList(Model model){
        List<VIIREntity> users = iviirService.getResult();
        model.addAttribute("users",users);
        return "first";
    }

    //这是返回成功的结果的
    @RequestMapping("/save2")
//    @ResponseBody
    public String save(VIIREntity viirEntity){
        iviirService.adds(viirEntity);
        return "redirect:/homePage";
    }

    @PostMapping("/update")
    public String updateUser(Model model, VIIREntity user, HttpServletRequest request){
        String id = request.getParameter("id");
        VIIREntity userById = iviirService.findUserById(Integer.parseInt(id));
        model.addAttribute("user",userById);
        iviirService.update(user);
        System.out.println(user);
        return "redirect:/first";
    }

    @ResponseBody
    @RequestMapping(value = "/userManagement1")
    public String listUser(
            @RequestParam(required = false,defaultValue="1",value="pageNum")Integer pageNum,
            @RequestParam(required = false,defaultValue="5",value="pageSize")Integer pageSize) {
        List<VIIREntity> userList = iviirService.getAll();
        System.out.println("分页数据：" + userList);
        return JSON.toJSONString(userList);
    }
    @RequestMapping(value="/updateInfo")
    @ResponseBody
    public String updataInfo(VIIREntity  viirEntity) throws Throwable {
        VIIREntity us=iviirService.update2(viirEntity);
        return JSON.toJSONString(us);
    }
}